<html>
    <head>
        <title>讨论</title>
    </head>
    <body>
        <script>
            /*
                        五、讨论

                                在现实世界中，你的插件可能有一些外部依赖项。

                                此外，你的应用程序可能被设计为支持插件。

                                所有这些都是你自己的系统需求。ABP所做的只是在应用程序启动时加载模块。你在模块中做什么取决于你。

                                但是，对于一些常见的情况，我们可以提供一些建议。


                                1、库依赖 Library Dependencies

                                        对于包/dll依赖项，你可以将相关的dll复制到插件文件夹中。ABP会自动加载文件夹中的所有程序集，你的插件将按预期工作。

                                2、数据库结构  Database Schema 

                                        如果你的模块使用关系数据库和Entity Framework Core，它将需要在数据库中提供其表。
                                        
                                        有不同的方法可以确保在应用程序使用插件时创建了表。
                                        
                                        一些例子:

                                                ①、插件可以检查数据库表是否存在，并在应用程序启动时创建表，或者如果插件已更新并需要一些模式更改，则迁移它们。
                                                
                                                   你可以使用EF Core的迁移API来做到这一点。

                                                ②、你可以改进DbMigrator应用程序以查找插件的迁移并执行它们。

                                     可能还有其他解决方案。例如，如果你的数据库管理员不允许你在应用程序代码中更改数据库模式，你可能需要手动向数据库管理员发送SQL文件以将其应用于数据库。   
                    */

        </script>
    </body>
</html>